/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Fabian
 */
@Entity
@Table(name = "experiencia_laboral")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ExperienciaLaboral.findAll", query = "SELECT e FROM ExperienciaLaboral e"),
    @NamedQuery(name = "ExperienciaLaboral.findByCedulaEvaluador", query = "SELECT e FROM ExperienciaLaboral e WHERE e.experienciaLaboralPK.cedulaEvaluador = :cedulaEvaluador"),
    @NamedQuery(name = "ExperienciaLaboral.findByCargo", query = "SELECT e FROM ExperienciaLaboral e WHERE e.experienciaLaboralPK.cargo = :cargo"),
    @NamedQuery(name = "ExperienciaLaboral.findByEmpresa", query = "SELECT e FROM ExperienciaLaboral e WHERE e.experienciaLaboralPK.empresa = :empresa"),
    @NamedQuery(name = "ExperienciaLaboral.findByTelefonoEmpresa", query = "SELECT e FROM ExperienciaLaboral e WHERE e.telefonoEmpresa = :telefonoEmpresa"),
    @NamedQuery(name = "ExperienciaLaboral.findByFechaInicio", query = "SELECT e FROM ExperienciaLaboral e WHERE e.fechaInicio = :fechaInicio"),
    @NamedQuery(name = "ExperienciaLaboral.findByFechaFin", query = "SELECT e FROM ExperienciaLaboral e WHERE e.fechaFin = :fechaFin"),
    @NamedQuery(name = "ExperienciaLaboral.findByJefe", query = "SELECT e FROM ExperienciaLaboral e WHERE e.jefe = :jefe"),
    @NamedQuery(name = "ExperienciaLaboral.findByTelefonoJefe", query = "SELECT e FROM ExperienciaLaboral e WHERE e.telefonoJefe = :telefonoJefe"),
    @NamedQuery(name = "ExperienciaLaboral.findByCorreoJefe", query = "SELECT e FROM ExperienciaLaboral e WHERE e.correoJefe = :correoJefe")})
public class ExperienciaLaboral implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected ExperienciaLaboralPK experienciaLaboralPK;
    @Column(name = "telefono_empresa")
    private String telefonoEmpresa;
    @Column(name = "fecha_inicio")
    @Temporal(TemporalType.DATE)
    private Date fechaInicio;
    @Column(name = "fecha_fin")
    @Temporal(TemporalType.DATE)
    private Date fechaFin;
    @Column(name = "jefe")
    private String jefe;
    @Column(name = "telefono_jefe")
    private String telefonoJefe;
    @Column(name = "correo_jefe")
    private String correoJefe;
    @JoinColumn(name = "cedula_evaluador", referencedColumnName = "cedula", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Evaluador evaluador;

    public ExperienciaLaboral() {
    }

    public ExperienciaLaboral(ExperienciaLaboralPK experienciaLaboralPK) {
        this.experienciaLaboralPK = experienciaLaboralPK;
    }

    public ExperienciaLaboral(String cedulaEvaluador, String cargo, String empresa) {
        this.experienciaLaboralPK = new ExperienciaLaboralPK(cedulaEvaluador, cargo, empresa);
    }

    public ExperienciaLaboralPK getExperienciaLaboralPK() {
        return experienciaLaboralPK;
    }

    public void setExperienciaLaboralPK(ExperienciaLaboralPK experienciaLaboralPK) {
        this.experienciaLaboralPK = experienciaLaboralPK;
    }

    public String getTelefonoEmpresa() {
        return telefonoEmpresa;
    }

    public void setTelefonoEmpresa(String telefonoEmpresa) {
        this.telefonoEmpresa = telefonoEmpresa;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getJefe() {
        return jefe;
    }

    public void setJefe(String jefe) {
        this.jefe = jefe;
    }

    public String getTelefonoJefe() {
        return telefonoJefe;
    }

    public void setTelefonoJefe(String telefonoJefe) {
        this.telefonoJefe = telefonoJefe;
    }

    public String getCorreoJefe() {
        return correoJefe;
    }

    public void setCorreoJefe(String correoJefe) {
        this.correoJefe = correoJefe;
    }

    public Evaluador getEvaluador() {
        return evaluador;
    }

    public void setEvaluador(Evaluador evaluador) {
        this.evaluador = evaluador;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (experienciaLaboralPK != null ? experienciaLaboralPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ExperienciaLaboral)) {
            return false;
        }
        ExperienciaLaboral other = (ExperienciaLaboral) object;
        if ((this.experienciaLaboralPK == null && other.experienciaLaboralPK != null) || (this.experienciaLaboralPK != null && !this.experienciaLaboralPK.equals(other.experienciaLaboralPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "modelo.ExperienciaLaboral[ experienciaLaboralPK=" + experienciaLaboralPK + " ]";
    }
    
}
